

//生成树形结构的函数
function generateTree(){

	$.ajax({
		"url":"menu/get/whole/treeNew.ht",
		"type":"post",
		"dataType":"json",
		"success":function(response){
			var result =response.result;
			if(result=="SUCCESS"){
				//1、创建JSON对象用于存储对zTree所做的设置
				var setting = {
					"view":{
						"addDiyDom":myAddDiyDom,
						"addHoverDom":myAddHoverDom,
						"removeHoverDom": myRemoveHoverDom
					},
					"data":{
						"key":{
							"url":"maomi"
						}
					}
				};
				
				//2、准备生成树形结构的JSON数据，数据来源是发送Ajax请求得到的
				var zNodes=response.data;
				
				//3、初始化树形结构
				$.fn.zTree.init($("#treeDemo"), setting, zNodes);
				
			}
			if (result=="FAILED") {
				
			}
		},
		"error":function(response){
			alert("出错了，"+response);
		}
	});
	
}


// 在鼠标离开节点范围时删除按钮组
function myRemoveHoverDom(treeId, treeNode) {
	
	// 拼接按钮组的id
	var btnGroupId = treeNode.tId + "_btnGrp";
	
	// 移除对应的元素
	$("#"+btnGroupId).remove();
	
}
// 在鼠标移入节点范围时添加按钮组
function myAddHoverDom(treeId,treeNode){

	// 按钮组的标签结构：<span><a><i></i></a><a><i></i></a></span>
	// 按钮组出现的位置：节点中treeDemo_n_a超链接的后面
	
	// 为了在需要移除按钮组的时候能够精确定位到按钮组所在span，需要给span设置有规律的id
	var btnGroupId = treeNode.tId + "_btnGrp";

	// 判断一下以前是否已经添加了按钮组
	if($("#"+btnGroupId).length > 0) {
		return ;
	}
	
	//准备各个按钮的HTML标签(如果用on都不行的时候就用 onclick绑定方法)
	var addBtn="<a id='"+treeNode.id+"' onclick='showAddModal(this.id)' class='addBtn btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' href='#' title='新增+'>&nbsp;&nbsp;<i class='fa fa-fw fa-plus rbg '></i></a>";
	var removeBtn="<a id='"+treeNode.id+"' class='removeBtn btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' href='#' title='删除X'>&nbsp;&nbsp;<i class='fa fa-fw fa-times rbg '></i></a>";
	var editBtn="<a id='"+treeNode.id+"' class='editBtn btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' href='#' title='修改权限信息'>&nbsp;&nbsp;<i class='fa fa-fw fa-edit rbg '></i></a>";
	
	//判断当前节点的级别数据
	var level=treeNode.level;
	
	//声明变量存储拼接好的按钮代码
	var btnHTML = "";
	
	//判断当前节点的级别
	if(level == 0){
		btnHTML = addBtn;
	}
	if(level == 1){
		// 级别为1时是分支节点，可以添加子节点、修改
		btnHTML=addBtn+" "+editBtn;
		//获取当前子节点的数量
		var length=treeNode.children.length;
		
		//没有子节点了才可以删除，给该节点加上删除按钮
		if(length == 0){
			btnHTML = btnHTML+" "+removeBtn;
		}
	}
	if(level == 2){
		btnHTML = editBtn + " " +removeBtn;//只有删除和修改
	}
	
	//找到附着按钮组的超连接件
	var anchorId = treeNode.tId+"_a"
	
	//执行在超链接后面附加span元素的操作
	$("#"+anchorId).after("<span id='"+btnGroupId+"'>"+btnHTML+"</span>");
	
}


//修改默认图标的方法
function myAddDiyDom(treeId,treeNode){
	
	// treeId是整个树形结构附着的ul标签的id
	//console.log("treeId="+treeId);
	
	// 当前树形节点的全部的数据，包括从后端查询得到的Menu对象的全部属性
	//console.log(treeNode);
	
	//思路
	//根据控制图标的span标签的id找到这个span标签
	
	//zTree生成id的规则
	//例子treeDemo_7_ico
	//解析：ul标签的id_当前节点的序号_功能
	//提示："ul标签的id_当前节点的序号" 部分可以通过访问treeNoode的tId属性得到
	//根据id生成的规则拼接出来的span标签的id
	
	var spanId = treeNode.tId+"_ico";//没想到这么简单吧，具体思路看笔记
	
	// 根据控制图标的span标签的id找到这个span标签
	//删除旧的class 并且 添加新的class
	$("#"+spanId)
		.removeClass()				
		.addClass(treeNode.icon);    //删掉旧的  //换成新的
	
}













